You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/09/03 14:32:11 UTC
[20/87] [abbrv] [partial] isis git commit: ISIS-1194: moving the
wicket submodules to be direct children of core;
removing the isis-viewer-wicket parent pom.
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
deleted file mode 100644
index 219c379..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.name.Names;
-import com.google.inject.util.Providers;
-
-import org.apache.isis.applib.AppManifest;
-import org.apache.isis.applib.services.email.EmailService;
-import org.apache.isis.applib.services.userreg.EmailNotificationService;
-import org.apache.isis.core.runtime.services.email.EmailServiceDefault;
-import org.apache.isis.core.runtime.services.userreg.EmailNotificationServiceDefault;
-import org.apache.isis.core.runtime.systemusinginstallers.IsisSystemThatUsesInstallersFactory;
-import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-import org.apache.isis.viewer.wicket.ui.pages.EmailVerificationUrlService;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassList;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
-import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
-import org.apache.isis.viewer.wicket.ui.pages.accmngt.EmailVerificationUrlServiceDefault;
-import org.apache.isis.viewer.wicket.viewer.imagecache.ImageResourceCacheClassPath;
-import org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistrarDefault;
-import org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistryDefault;
-import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassListDefault;
-import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassRegistryDefault;
-import org.apache.isis.viewer.wicket.viewer.registries.pages.PageNavigationServiceDefault;
-import org.apache.isis.viewer.wicket.viewer.settings.WicketViewerSettingsDefault;
-
-/**
- * To override
- *
- * <pre>
- * final Module isisDefaults = new IsisWicketModule();
- *
- * final Module myAppOverrides = new AbstractModule() {
- * @Override
- * protected void configure() {
- * bind(ComponentFactoryRegistrar.class).to(ComponentFactoryRegistrarForMyApp.class);
- * bind(PageClassList.class).to(PageClassListForMyApp.class);
- * ...
- * bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("My App");
- * bind(String.class).annotatedWith(Names.named("brandLogoHeader")).toInstance("/images/myapp-logo-header.png");
- * bind(String.class).annotatedWith(Names.named("brandLogoSignin")).toInstance("/images/myapp-logo-signin.png");
- * bind(String.class).annotatedWith(Names.named("applicationCss")).toInstance("css/application.css");
- * bind(String.class).annotatedWith(Names.named("applicationJs")).toInstance("scripts/application.js");
- * bind(String.class).annotatedWith(Names.named("welcomeMessage")).toInstance("Hello, welcome to my app");
- * bind(String.class).annotatedWith(Names.named("aboutMessage")).toInstance("MyApp v1.0.0");
- * bind(AppManifest.class).toInstance(new MyAppManifest());
- * }
- * };
- * final Module overridden = Modules.override(isisDefaults).with(myAppOverrides);
- * </pre>
- */
-public class IsisWicketModule extends AbstractModule {
-
- @Override
- protected void configure() {
- bind(ComponentFactoryRegistry.class).to(ComponentFactoryRegistryDefault.class);
- bind(PageClassRegistry.class).to(PageClassRegistryDefault.class);
- bind(EmailVerificationUrlService.class).to(EmailVerificationUrlServiceDefault.class);
- bind(PageNavigationService.class).to(PageNavigationServiceDefault.class);
- bind(PageClassList.class).to(PageClassListDefault.class);
- bind(ComponentFactoryRegistrar.class).to(ComponentFactoryRegistrarDefault.class);
- bind(ImageResourceCache.class).to(ImageResourceCacheClassPath.class);
- bind(WicketViewerSettings.class).to(WicketViewerSettingsDefault.class);
-
- // these services need to be bound because they injected directly into
- // Wicket panels outside of the Isis runtime.
- bind(EmailService.class)
- .to(EmailServiceDefault.class);
- bind(EmailNotificationService.class)
- .to(EmailNotificationServiceDefault.class);
-
- bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("Apache Isis Wicket Viewer");
- bind(String.class).annotatedWith(Names.named("applicationCss")).toProvider(Providers.of((String) null));
- bind(String.class).annotatedWith(Names.named("applicationJs")).toProvider(Providers.of((String)null));
- bind(String.class).annotatedWith(Names.named("welcomeMessage")).toProvider(Providers.of((String)null));
- bind(String.class).annotatedWith(Names.named("aboutMessage")).toProvider(Providers.of((String)null));
-
- bind(AppManifest.class).toInstance(IsisSystemThatUsesInstallersFactory.NOOP);
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
deleted file mode 100644
index 45b9948..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.imagecache;
-
-import images.Images;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import com.google.common.collect.Maps;
-import com.google.inject.Singleton;
-import org.apache.wicket.request.resource.PackageResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
-
-/**
- * Caches images loaded up the <tt>images</tt> package (using the {@link Images}
- * class).
- *
- * <p>
- * Searches for a fixed set of suffixes: {@link #IMAGE_SUFFICES}.
- */
-@Singleton
-public class ImageResourceCacheClassPath implements ImageResourceCache {
-
- private static final long serialVersionUID = 1L;
-
- private static final List<String> IMAGE_SUFFICES = Arrays.asList("png", "gif", "jpeg", "jpg");
- private static final String FALLBACK_IMAGE = "Default.png";
-
- private final Map<ImageResourceCacheKey, ResourceReference> resourceReferenceByKey = Maps.newConcurrentMap();
- private final PackageResourceReference fallbackResource;
-
- public ImageResourceCacheClassPath() {
- fallbackResource = new PackageResourceReference(Images.class, FALLBACK_IMAGE);
- resourceReferenceByKey.put(new ImageResourceCacheKey(null, null), fallbackResource);
- }
-
- @Override
- public ResourceReference resourceReferenceFor(final ObjectAdapter adapter) {
- return resourceReferenceFor(adapter.getSpecification(), adapter.getIconName());
- }
-
- @Override
- public ResourceReference resourceReferenceForSpec(final ObjectSpecification spec) {
- return resourceReferenceFor(spec, null);
- }
-
- private ResourceReference resourceReferenceFor(
- final ObjectSpecification specification,
- final String iconNameIfAny) {
-
- final Class<?> correspondingClassIfAny = specification != null? specification.getCorrespondingClass(): null;
- final ImageResourceCacheKey key = new ImageResourceCacheKey(correspondingClassIfAny, iconNameIfAny);
-
- ResourceReference resourceReference = resourceReferenceByKey.get(key);
- if(resourceReference == null) {
- resourceReference = findResourceReferenceFor(key);
- resourceReferenceByKey.put(key, resourceReference);
- }
-
- return resourceReference;
- }
-
- protected ResourceReference findResourceReferenceFor(final ImageResourceCacheKey key) {
- final List<ImageResourceCacheKey> keys = key.resourcePaths(IMAGE_SUFFICES);
- for (ImageResourceCacheKey resourceKey : keys) {
- Class<?> resourceClass = resourceKey.getResourceClass();
- if(resourceClass == null) {
- resourceClass = Images.class;
- }
- final String iconName = resourceKey.getResourceName();
-
- final InputStream resourceAsStream = resourceClass.getResourceAsStream(iconName);
- if (resourceAsStream != null) {
- closeSafely(resourceAsStream);
- return new PackageResourceReference(resourceClass, iconName);
- }
- }
- return fallbackResource;
- }
-
- private static void closeSafely(InputStream resourceAsStream) {
- try {
- resourceAsStream.close();
- } catch (IOException e) {
- // ignore
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheKey.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheKey.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheKey.java
deleted file mode 100644
index 68a1ff0..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheKey.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.imagecache;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import com.google.common.collect.Lists;
-import org.apache.isis.core.commons.lang.ClassUtil;
-
-final class ImageResourceCacheKey implements Serializable {
-
- ImageResourceCacheKey(
- final Class<?> resourceClass,
- final String resourceName) {
- this.resourceName = resourceName;
- this.resourceClass = resourceClass;
- this.toString = calcToString();
- }
-
- //region > getResourceClass, getResourceName
-
- private final Class<?> resourceClass;
- private final String resourceName;
-
- public final Class<?> getResourceClass() {
- return resourceClass;
- }
-
- public final String getResourceName() {
- return resourceName;
- }
- //endregion
-
- //region > superKey
-
- ImageResourceCacheKey superKey() {
- if(resourceClass == null) {
- return null;
- }
- final Class<?> superclass = resourceClass.getSuperclass();
- if(superclass == Object.class) {
- return null;
- }
- return new ImageResourceCacheKey(superclass, resourceName);
- }
-
- //endregion
-
- //region > resourcePaths
-
- List<ImageResourceCacheKey> resourcePaths(final String... suffices) {
- return resourcePaths(Arrays.asList(suffices));
- }
-
- List<ImageResourceCacheKey> resourcePaths(final List<String> suffices) {
-
- ImageResourceCacheKey key;
- final List<ImageResourceCacheKey> resourcePaths = Lists.newArrayList();
-
-
- boolean generated = false;
-
- if(resourceName != null) {
-
- final Class<?> resourceClass = ClassUtil.forNameElseNull(resourceName);
-
- if(resourceClass != null) {
- for (String suffix : suffices) {
- resourcePaths.add(new ImageResourceCacheKey(resourceClass, resourceClass.getSimpleName() + "." + suffix));
- }
- generated = true;
- }
- }
-
- if(!generated && resourceClass != null) {
- // with the iconName
- if(resourceName != null) {
- key = this;
- do {
- for (String suffix : suffices) {
- resourcePaths.add(new ImageResourceCacheKey(key.getResourceClass(), key.getResourceClass().getSimpleName() + "-" + resourceName + "." + suffix));
- }
- for (String suffix : suffices) {
- resourcePaths.add(new ImageResourceCacheKey(key.getResourceClass(), resourceName + "." + suffix));
- }
- } while ((key = key.superKey()) != null);
- key = this;
- do {
- for (String suffix : suffices) {
- resourcePaths.add(new ImageResourceCacheKey(null, key.getResourceClass().getSimpleName() + "-" + resourceName + "." + suffix));
- }
- } while ((key = key.superKey()) != null);
- for (String suffix : suffices) {
- resourcePaths.add(new ImageResourceCacheKey(null, resourceName + "." + suffix));
- }
- }
-
- // without the iconName
- key = this;
- do {
- for (String suffix : suffices) {
- resourcePaths.add(new ImageResourceCacheKey(key.getResourceClass(), key.getResourceClass().getSimpleName() + "." + suffix));
- }
- } while ((key = key.superKey()) != null);
- key = this;
- do {
- for (String suffix : suffices) {
- resourcePaths.add(new ImageResourceCacheKey(null, key.getResourceClass().getSimpleName() + "." + suffix));
- }
- } while ((key = key.superKey()) != null);
-
- generated = true;
- }
-
- if(!generated && resourceName != null) {
-
- for (String suffix : suffices) {
- resourcePaths.add(new ImageResourceCacheKey(null, resourceName + "." + suffix));
- }
-
- }
-
- // fallback
- for (String suffix : suffices) {
- resourcePaths.add(new ImageResourceCacheKey(null, "Default" + "." + suffix));
- }
-
-
- return Collections.unmodifiableList(resourcePaths);
- }
-
- //endregion
-
- //region > equals, hashCode
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- ImageResourceCacheKey key = (ImageResourceCacheKey) o;
- if (toString != null ? !toString.equals(key.toString) : key.toString != null) return false;
- return true;
- }
-
- @Override
- public int hashCode() {
- return toString != null ? toString.hashCode() : 0;
- }
-
- //endregion
-
- //region > toString
-
- private final String toString;
-
- @Override
- public String toString() {
- return toString;
- }
-
- private String calcToString() {
- final StringBuilder buf = new StringBuilder();
- if(resourceClass != null) {
- buf.append(resourceClass.getName()).append("/").append(resourceClass.getSimpleName());
- }
- if(buf.length() > 0) {
- buf.append("-");
- }
- if(resourceName != null) {
- buf.append(resourceName);
- }
- return buf.toString();
- }
- //endregion
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
deleted file mode 100644
index cfca7c6..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeAbstract.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.integration.isis;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.system.ContextCategory;
-import org.apache.isis.core.runtime.system.DeploymentType;
-
-/**
- * Simple adapter for Isis' {@link DeploymentType} class, specifying that the
- * {@link ContextCategory#THREADLOCAL} is used as the
- * {@link ContextCategory}.
- */
-public abstract class DeploymentTypeAbstract extends DeploymentType {
-
- public DeploymentTypeAbstract(final String name, final DeploymentCategory category) {
- super(name, category, ContextCategory.THREADLOCAL);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeWicketAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeWicketAbstract.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeWicketAbstract.java
deleted file mode 100644
index dcefd4c..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/DeploymentTypeWicketAbstract.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.integration.isis;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.RuntimeConfigurationType;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
-
-/**
- * {@link DeploymentType} for production usage.
- *
- * <p>
- * In {@link IsisWicketApplication} there is logic to select either this
- * {@link DeploymentType} or {@link WicketServerPrototype} depending on the
- * value of Wicket's own {@link Application#getConfigurationType() configuration mode}.
- */
-public class DeploymentTypeWicketAbstract extends DeploymentTypeAbstract {
-
- public DeploymentTypeWicketAbstract(
- final String name, final DeploymentCategory deploymentCategory) {
- super(name, deploymentCategory);
- }
-
- public RuntimeConfigurationType getConfigurationType() {
- return getDeploymentCategory().isProduction()? RuntimeConfigurationType.DEPLOYMENT: RuntimeConfigurationType.DEVELOPMENT;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java
deleted file mode 100644
index da1cf7a..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServer.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.integration.isis;
-
-import org.apache.wicket.Application;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
-
-/**
- * {@link DeploymentType} for production usage.
- *
- * <p>
- * In {@link IsisWicketApplication} there is logic to select either this
- * {@link DeploymentType} or {@link WicketServerPrototype} depending on the value
- * of Wicket's own {@link Application#getConfigurationType() configuration mode}.
- */
-public class WicketServer extends DeploymentTypeWicketAbstract {
-
- public WicketServer() {
- super("WICKET_SERVER", DeploymentCategory.PRODUCTION);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java
deleted file mode 100644
index 5878c5d..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/isis/WicketServerPrototype.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.integration.isis;
-
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
-
-/**
- * {@link DeploymentType} for prototype usage.
- *
- * <p>
- * In {@link IsisWicketApplication} there is logic to select either this
- * {@link DeploymentType} or {@link WicketServer} depending on the value of
- * Wicket's own {@link org.apache.wicket.Application#getConfigurationType() configuration mode}.
- */
-public class WicketServerPrototype extends DeploymentTypeWicketAbstract {
-
- public WicketServerPrototype() {
- super("WICKET_SERVER_PROTOTYPE", DeploymentCategory.PROTOTYPING);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AnonymousWebSessionForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AnonymousWebSessionForIsis.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AnonymousWebSessionForIsis.java
deleted file mode 100644
index d5686e0..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AnonymousWebSessionForIsis.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.integration.wicket;
-
-import org.apache.wicket.Session;
-import org.apache.wicket.request.Request;
-
-import org.apache.isis.core.runtime.authentication.AuthenticationManager;
-
-public class AnonymousWebSessionForIsis extends AuthenticatedWebSessionForIsis {
-
- private static final long serialVersionUID = 1L;
-
- public static AnonymousWebSessionForIsis get() {
- return (AnonymousWebSessionForIsis) Session.get();
- }
-
- private final AuthenticationManager authenticationManager;
-
- public AnonymousWebSessionForIsis(final Request request, final AuthenticationManager authenticationManager) {
- super(request);
- this.authenticationManager = authenticationManager;
- }
-
- @Override
- protected AuthenticationManager getAuthenticationManager() {
- return authenticationManager;
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
deleted file mode 100644
index 05db776..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/AuthenticatedWebSessionForIsis.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.integration.wicket;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.Callable;
-import org.apache.wicket.Session;
-import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
-import org.apache.wicket.authroles.authorization.strategies.role.Roles;
-import org.apache.wicket.request.Request;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.isis.applib.clock.Clock;
-import org.apache.isis.applib.services.session.SessionLoggingService;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
-import org.apache.isis.core.commons.ensure.Ensure;
-import org.apache.isis.core.runtime.authentication.AuthenticationManager;
-import org.apache.isis.core.runtime.authentication.AuthenticationRequest;
-import org.apache.isis.core.runtime.authentication.AuthenticationRequestPassword;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
-import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
-import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModelProvider;
-import org.apache.isis.viewer.wicket.ui.pages.BookmarkedPagesModelProvider;
-
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.not;
-import static org.hamcrest.Matchers.nullValue;
-
-/**
- * Viewer-specific implementation of {@link AuthenticatedWebSession}, which
- * delegates to the Isis' configured {@link AuthenticationManager}, and which
- * also tracks thread usage (so that multiple concurrent requests are all
- * associated with the same session).
- */
-public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession implements AuthenticationSessionProvider, BreadcrumbModelProvider, BookmarkedPagesModelProvider {
-
- private static final long serialVersionUID = 1L;
-
- public static final String USER_ROLE = "org.apache.isis.viewer.wicket.roles.USER";
-
- public static AuthenticatedWebSessionForIsis get() {
- return (AuthenticatedWebSessionForIsis) Session.get();
- }
-
- private final BookmarkedPagesModel bookmarkedPagesModel = new BookmarkedPagesModel();
- private final BreadcrumbModel breadcrumbModel = new BreadcrumbModel();
-
- private AuthenticationSession authenticationSession;
-
- public AuthenticatedWebSessionForIsis(final Request request) {
- super(Ensure.ensureThatArg(request, is(not(nullValue(Request.class)))));
- }
-
- @Override
- public boolean authenticate(final String username, final String password) {
- AuthenticationRequest authenticationRequest = new AuthenticationRequestPassword(username, password);
- authenticationRequest.setRoles(Arrays.asList(USER_ROLE));
- authenticationSession = getAuthenticationManager().authenticate(authenticationRequest);
- if (authenticationSession != null) {
- log(SessionLoggingService.Type.LOGIN, username, null);
- return true;
- } else {
- return false;
- }
- }
-
- @Override
- public void onInvalidate() {
- super.onInvalidate();
-
- SessionLoggingService.CausedBy causedBy = RequestCycle.get() != null
- ? SessionLoggingService.CausedBy.USER
- : SessionLoggingService.CausedBy.SESSION_EXPIRATION;
-
- String userName = null;
- if (authenticationSession != null) {
- userName = authenticationSession.getUserName();
- }
-
- log(SessionLoggingService.Type.LOGOUT, userName, causedBy);
- }
-
- @Override
- public AuthenticationSession getAuthenticationSession() {
- return authenticationSession;
- }
-
- @Override
- public Roles getRoles() {
- if (!isSignedIn()) {
- return null;
- }
- final List<String> roles = authenticationSession.getRoles();
- return new Roles(roles.toArray(new String[roles.size()]));
- }
-
- // /////////////////////////////////////////////////
- // Breadcrumbs and Bookmarks support
- // /////////////////////////////////////////////////
-
- @Override
- public BreadcrumbModel getBreadcrumbModel() {
- return breadcrumbModel;
- }
-
- @Override
- public BookmarkedPagesModel getBookmarkedPagesModel() {
- return bookmarkedPagesModel;
- }
-
-
- // /////////////////////////////////////////////////
- // Dependencies
- // /////////////////////////////////////////////////
-
- protected AuthenticationManager getAuthenticationManager() {
- return IsisContext.getAuthenticationManager();
- }
-
- // /////////////////////////////////////////////////
- // *Provider impl.
- // /////////////////////////////////////////////////
-
- @Override
- public void injectInto(final Object candidate) {
- if (AuthenticationSessionProviderAware.class.isAssignableFrom(candidate.getClass())) {
- final AuthenticationSessionProviderAware cast = AuthenticationSessionProviderAware.class.cast(candidate);
- cast.setAuthenticationSessionProvider(this);
- }
- }
-
- private void log(
- final SessionLoggingService.Type type,
- final String username,
- final SessionLoggingService.CausedBy causedBy) {
- final SessionLoggingService sessionLoggingService = getSessionLoggingService();
- if (sessionLoggingService != null) {
- IsisContext.doInSession(new Runnable() {
- @Override
- public void run() {
- // use hashcode as session identifier, to avoid re-binding http sessions if using Session#getId()
- int sessionHashCode = System.identityHashCode(AuthenticatedWebSessionForIsis.this);
- sessionLoggingService.log(type, username, Clock.getTimeAsDateTime().toDate(), causedBy, Integer.toString(sessionHashCode));
- }
- });
- }
- }
-
- protected SessionLoggingService getSessionLoggingService() {
- return IsisContext.doInSession(new Callable<SessionLoggingService>() {
- @Override
- public SessionLoggingService call() throws Exception {
- return IsisContext.getPersistenceSession().getServicesInjector().lookupService(SessionLoggingService.class);
- }
- });
- }
-
- @Override
- public void replaceSession() {
- // do nothing here because this will lead to problems with Shiro
- // see https://issues.apache.org/jira/browse/ISIS-1018
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
deleted file mode 100644
index 940a1ef..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapter.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.integration.wicket;
-
-import java.util.Locale;
-
-import org.apache.wicket.util.convert.IConverter;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-
-/**
- * Implementation of a Wicket {@link IConverter} for {@link ObjectAdapter}s,
- * converting to-and-from their {@link Oid}'s string representation.
- */
-public class ConverterForObjectAdapter implements IConverter<ObjectAdapter> {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Converts string representation of {@link Oid} to
- * {@link ObjectAdapter}.
- */
- @Override
- public ObjectAdapter convertToObject(final String value, final Locale locale) {
- final Oid oid = RootOidDefault.deStringEncoded(value, getOidMarshaller());
- return getAdapterManager().getAdapterFor(oid);
- }
-
- /**
- * Converts {@link ObjectAdapter} to string representation of {@link Oid}.
- */
- @Override
- public String convertToString(final ObjectAdapter adapter, final Locale locale) {
- final Oid oid = adapter.getOid();
- if (oid == null) {
- // values don't have an Oid
- return null;
- }
-
- return oid.enString(getOidMarshaller());
- }
-
-
-
- // //////////////////////////////////////////////////////////
- // Dependencies (from context)
- // //////////////////////////////////////////////////////////
-
- protected AdapterManager getAdapterManager() {
- return IsisContext.getPersistenceSession().getAdapterManager();
- }
-
- protected OidMarshaller getOidMarshaller() {
- return IsisContext.getOidMarshaller();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
deleted file mode 100644
index 7de6544..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/ConverterForObjectAdapterMemento.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.integration.wicket;
-
-import java.util.Locale;
-
-import com.google.common.base.Strings;
-
-import org.apache.wicket.util.convert.IConverter;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
-import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-
-/**
- * Implementation of a Wicket {@link IConverter} for
- * {@link ObjectAdapterMemento}s, converting to-and-from their {@link Oid}'s
- * string representation.
- */
-public class ConverterForObjectAdapterMemento implements IConverter<ObjectAdapterMemento> {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * Converts string representation of {@link Oid} to
- * {@link ObjectAdapterMemento}.
- */
- @Override
- public ObjectAdapterMemento convertToObject(final String value, final Locale locale) {
- if (Strings.isNullOrEmpty(value)) {
- return null;
- }
- final Oid oid = RootOidDefault.deStringEncoded(value, getOidMarshaller());
- final ObjectAdapter adapter = getAdapterManager().getAdapterFor(oid);
- return ObjectAdapterMemento.createOrNull(adapter);
- }
-
- /**
- * Converts {@link ObjectAdapterMemento} to string representation of
- * {@link RootOid}.
- */
- @Override
- public String convertToString(final ObjectAdapterMemento memento, final Locale locale) {
- if (memento == null) {
- return null;
- }
- final Oid oid = memento.getObjectAdapter(ConcurrencyChecking.NO_CHECK).getOid();
- if (oid == null) {
- // values don't have an Oid...
- // REVIEW: is this right?
- return memento.toString();
- }
- return oid.enString(getOidMarshaller());
- }
-
-
-
- // //////////////////////////////////////////////////////////
- // Dependencies (from context)
- // //////////////////////////////////////////////////////////
-
- protected AdapterManager getAdapterManager() {
- return getPersistenceSession().getAdapterManager();
- }
-
- protected PersistenceSession getPersistenceSession() {
- return IsisContext.getPersistenceSession();
- }
-
- protected OidMarshaller getOidMarshaller() {
- return IsisContext.getOidMarshaller();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
deleted file mode 100644
index 098efde..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.integration.wicket;
-
-import java.lang.reflect.Constructor;
-import java.util.List;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Lists;
-
-import org.apache.wicket.Application;
-import org.apache.wicket.IPageFactory;
-import org.apache.wicket.Page;
-import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.Session;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
-import org.apache.wicket.core.request.handler.PageProvider;
-import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
-import org.apache.wicket.core.request.handler.RenderPageRequestHandler.RedirectPolicy;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.protocol.http.PageExpiredException;
-import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.component.IRequestablePage;
-import org.apache.wicket.request.cycle.AbstractRequestCycleListener;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerComposite;
-import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerForType;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.session.IsisSession;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.viewer.wicket.model.models.PageType;
-import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
-import org.apache.isis.viewer.wicket.ui.pages.error.ErrorPage;
-import org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage;
-import org.apache.isis.viewer.wicket.ui.pages.mmverror.MmvErrorPage;
-import org.apache.isis.viewer.wicket.viewer.IsisWicketApplication;
-
-/**
- * Isis-specific implementation of the Wicket's {@link RequestCycle},
- * automatically opening a {@link IsisSession} at the beginning of the request
- * and committing the transaction and closing the session at the end.
- */
-public class WebRequestCycleForIsis extends AbstractRequestCycleListener {
-
- private static final Logger LOG = LoggerFactory.getLogger(WebRequestCycleForIsis.class);
-
- private PageClassRegistry pageClassRegistry;
-
- @Override
- public synchronized void onBeginRequest(RequestCycle requestCycle) {
-
- if (!Session.exists()) {
- return;
- }
- final AuthenticatedWebSessionForIsis wicketSession = AuthenticatedWebSessionForIsis.get();
- final AuthenticationSession authenticationSession = wicketSession.getAuthenticationSession();
- if (authenticationSession == null) {
- return;
- }
-
- getIsisContext().openSessionInstance(authenticationSession);
- getTransactionManager().startTransaction();
- }
-
-
- /**
- * Is called prior to {@link #onEndRequest(RequestCycle)}, and offers the opportunity to
- * throw an exception.
- */
- @Override
- public void onRequestHandlerExecuted(RequestCycle cycle, IRequestHandler handler) {
- if(LOG.isDebugEnabled()) {
- LOG.debug("onRequestHandlerExecuted: handler: " + handler);
- }
-
- final IsisSession session = getIsisContext().getSessionInstance();
- if (session != null) {
- try {
- // will commit (or abort) the transaction;
- // an abort will cause the exception to be thrown.
- getTransactionManager().endTransaction();
- } catch(Exception ex) {
- // will redirect to error page after this,
- // so make sure there is a new transaction ready to go.
- if(getTransactionManager().getTransaction().getState().isComplete()) {
- getTransactionManager().startTransaction();
- }
- if(handler instanceof RenderPageRequestHandler) {
- RenderPageRequestHandler requestHandler = (RenderPageRequestHandler) handler;
- if(requestHandler.getPage() instanceof ErrorPage) {
- // do nothing
- return;
- }
- }
-
- // shouldn't return null given that we're in a session ...
- PageProvider errorPageProvider = errorPageProviderFor(ex);
- throw new RestartResponseException(errorPageProvider, RedirectPolicy.ALWAYS_REDIRECT);
- }
- }
- }
-
- /**
- * It is not possible to throw exceptions here, hence use of {@link #onRequestHandlerExecuted(RequestCycle, IRequestHandler)}.
- */
- @Override
- public synchronized void onEndRequest(RequestCycle cycle) {
- final IsisSession session = getIsisContext().getSessionInstance();
- if (session != null) {
- try {
- // belt and braces
- getTransactionManager().endTransaction();
- } finally {
- getIsisContext().closeSessionInstance();
- }
- }
- }
-
-
- @Override
- public IRequestHandler onException(RequestCycle cycle, Exception ex) {
- PageProvider errorPageProvider = errorPageProviderFor(ex);
- // avoid infinite redirect loops
- RedirectPolicy redirectPolicy = ex instanceof PageExpiredException? RedirectPolicy.NEVER_REDIRECT: RedirectPolicy.ALWAYS_REDIRECT;
- return errorPageProvider != null
- ? new RenderPageRequestHandler(errorPageProvider, redirectPolicy)
- : null;
- }
-
- protected PageProvider errorPageProviderFor(Exception ex) {
- IRequestablePage errorPage = errorPageFor(ex);
- return errorPage != null? new PageProvider(errorPage): null;
- }
-
- // special case handling for PageExpiredException, otherwise infinite loop
- private final static ExceptionRecognizerForType pageExpiredExceptionRecognizer =
- new ExceptionRecognizerForType(PageExpiredException.class, new Function<String,String>(){
- @Override
- public String apply(String input) {
- return "Requested page is no longer available. Please navigate back to the home page or select an object from the bookmark bar.";
- }
- });
-
- protected IRequestablePage errorPageFor(Exception ex) {
- List<ExceptionRecognizer> exceptionRecognizers = Lists.newArrayList();
- exceptionRecognizers.add(pageExpiredExceptionRecognizer);
-
- if(inIsisSession()) {
- exceptionRecognizers.addAll(getServicesInjector().lookupServices(ExceptionRecognizer.class));
- } else {
- List<String> validationErrors = IsisWicketApplication.get().getValidationErrors();
- if(!validationErrors.isEmpty()) {
- return new MmvErrorPage(Model.ofList(validationErrors));
- }
- // not sure whether this can ever happen now...
- LOG.warn("Unable to obtain exceptionRecognizers (no session), will be treated as unrecognized exception");
- }
- String recognizedMessageIfAny = new ExceptionRecognizerComposite(exceptionRecognizers).recognize(ex);
- ExceptionModel exceptionModel = ExceptionModel.create(recognizedMessageIfAny, ex);
-
- return isSignedIn() ? new ErrorPage(exceptionModel) : newSignInPage(exceptionModel);
- }
-
- /**
- * Tries to instantiate the configured {@link PageType#SIGN_IN signin page} with the given exception model
- *
- * @param exceptionModel A model bringing the information about the occurred problem
- * @return An instance of the configured signin page
- */
- private IRequestablePage newSignInPage(final ExceptionModel exceptionModel) {
- Class<? extends Page> signInPageClass = null;
- if (pageClassRegistry != null) {
- signInPageClass = pageClassRegistry.getPageClass(PageType.SIGN_IN);
- }
- if (signInPageClass == null) {
- signInPageClass = WicketSignInPage.class;
- }
- final PageParameters parameters = new PageParameters();
- Page signInPage;
- try {
- Constructor<? extends Page> constructor = signInPageClass.getConstructor(PageParameters.class, ExceptionModel.class);
- signInPage = constructor.newInstance(parameters, exceptionModel);
- } catch (Exception _) {
- try {
- IPageFactory pageFactory = Application.get().getPageFactory();
- signInPage = pageFactory.newPage(signInPageClass, parameters);
- } catch (Exception x) {
- throw new WicketRuntimeException("Cannot instantiate the configured sign in page", x);
- }
- }
- return signInPage;
- }
-
- /**
- * TODO: this is very hacky...
- *
- * <p>
- * Matters should improve once ISIS-299 gets implemented...
- */
- protected boolean isSignedIn() {
- if(!inIsisSession()) {
- return false;
- }
- if(getAuthenticationSession() == null) {
- return false;
- }
- return getWicketAuthenticationSession().isSignedIn();
- }
-
-
- public void setPageClassRegistry(PageClassRegistry pageClassRegistry) {
- this.pageClassRegistry = pageClassRegistry;
- }
-
- ///////////////////////////////////////////////////////////////
- // Dependencies (from isis' context)
- ///////////////////////////////////////////////////////////////
-
- protected ServicesInjector getServicesInjector() {
- return IsisContext.getPersistenceSession().getServicesInjector();
- }
-
- protected IsisContext getIsisContext() {
- return IsisContext.getInstance();
- }
-
- protected IsisTransactionManager getTransactionManager() {
- return IsisContext.getTransactionManager();
- }
-
- protected boolean inIsisSession() {
- return IsisContext.inSession();
- }
-
- protected AuthenticationSession getAuthenticationSession() {
- return IsisContext.getAuthenticationSession();
- }
-
- ///////////////////////////////////////////////////////////////
- // Dependencies (from wicket)
- ///////////////////////////////////////////////////////////////
-
-
- protected AuthenticatedWebSession getWicketAuthenticationSession() {
- return AuthenticatedWebSession.get();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
deleted file mode 100644
index 479b474..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.registries.components;
-
-import java.util.ServiceLoader;
-import com.google.inject.Singleton;
-import org.apache.isis.viewer.wicket.ui.ComponentFactory;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
-import org.apache.isis.viewer.wicket.ui.components.about.AboutPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actionlink.ActionLinkPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actionmenu.serviceactions.TertiaryMenuPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actions.ActionInfoPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actions.ActionPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actions.ActionParametersFormPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.actionmenu.serviceactions.ServiceActionsPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.bookmarkedpages.BookmarkedPagesPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.collection.CollectionPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.CollectionContentsAsAjaxTablePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.collectioncontents.multiple.CollectionContentsMultipleViewsPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.collectioncontents.summary.CollectionContentsAsSummaryFactory;
-import org.apache.isis.viewer.wicket.ui.components.collectioncontents.unresolved.CollectionContentsAsUnresolvedPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.empty.EmptyCollectionPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.collections.EntityCollectionsPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.combined.EntityCombinedPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.header.EntityHeaderPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.icontitle.EntityIconAndTitlePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.icontitle.EntityIconTitleAndCopyLinkPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.properties.EntityPropertiesPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.entity.selector.links.EntityLinksSelectorPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.footer.FooterPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.header.HeaderPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.*;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaSqlDatePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaSqlTimePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaSqlTimestampPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkdates.JavaUtilDatePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath.JavaMathBigDecimalPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath.JavaMathBigIntegerPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaDateTimePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaLocalDatePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.jodatime.JodaLocalDateTimePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.primitive.*;
-import org.apache.isis.viewer.wicket.ui.components.scalars.reference.ReferencePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.string.StringPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.value.ValuePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.standalonecollection.StandaloneCollectionPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.unknown.UnknownModelPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.value.StandaloneValuePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.voidreturn.VoidReturnPanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.welcome.WelcomePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.widgets.entitysimplelink.EntityLinkSimplePanelFactory;
-import org.apache.isis.viewer.wicket.ui.components.widgets.valuechoices.ValueChoicesSelect2PanelFactory;
-
-/**
- * Default implementation of {@link ComponentFactoryRegistrar} that registers a
- * hardcoded set of built-in {@link ComponentFactory}s, along with any
- * implementations loaded using {@link ServiceLoader} (ie from
- * <tt>META-INF/services</tt>).
- */
-@Singleton
-public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistrar {
-
- @Override
- public void addComponentFactories(final ComponentFactoryList componentFactories) {
-
- addComponentFactoriesActingAsSelectors(componentFactories);
-
- addComponentFactoriesUsingServiceLoader(componentFactories);
-
- addBuiltInComponentFactories(componentFactories);
- }
-
- /**
- * Any {@link ComponentFactory}s that act as selectors of other factories
- * should be registered here; they will be loaded first, to ensure that they
- * are found first.
- */
- protected void addComponentFactoriesActingAsSelectors(final ComponentFactoryList componentFactories) {
- addLinksSelectorFactories(componentFactories);
- componentFactories.add(new CollectionContentsAsUnresolvedPanelFactory()); // to prevent eager loading
- }
-
- protected void addLinksSelectorFactories(final ComponentFactoryList componentFactories) {
- componentFactories.add(new EntityLinksSelectorPanelFactory());
- componentFactories.add(new CollectionContentsMultipleViewsPanelFactory());
- }
-
- protected void addComponentFactoriesUsingServiceLoader(final ComponentFactoryList componentFactories) {
- final ServiceLoader<ComponentFactory> serviceLoader = ServiceLoader.load(ComponentFactory.class);
-
- for (final ComponentFactory componentFactory : serviceLoader) {
- componentFactories.add(componentFactory);
- }
- }
-
- private void addBuiltInComponentFactories(final ComponentFactoryList componentFactories) {
- addComponentFactoriesForWelcomeAndAbout(componentFactories);
- addComponentFactoriesForApplicationActions(componentFactories);
- addComponentFactoriesForEntity(componentFactories);
- addComponentFactoriesForActionInfo(componentFactories);
- addComponentFactoriesForAction(componentFactories);
- addComponentFactoriesForActionLink(componentFactories);
- addComponentFactoriesForEntityCollection(componentFactories);
- addComponentFactoriesForEntityCollectionContents(componentFactories);
- addComponentFactoriesForEmptyCollection(componentFactories);
- addComponentFactoriesForScalar(componentFactories);
- addComponentFactoriesForEntityLink(componentFactories);
- addComponentFactoriesForVoidReturn(componentFactories);
- addComponentFactoriesForValue(componentFactories);
- addComponentFactoriesForParameters(componentFactories);
- addComponentFactoriesForBreadcrumbs(componentFactories);
- addComponentFactoriesForPageHeader(componentFactories);
- addComponentFactoriesForPageFooter(componentFactories);
-
- addComponentFactoriesForUnknown(componentFactories);
- }
-
- protected void addComponentFactoriesForPageHeader(ComponentFactoryList componentFactories) {
- componentFactories.add(new HeaderPanelFactory());
- }
-
- protected void addComponentFactoriesForPageFooter(ComponentFactoryList componentFactories) {
- componentFactories.add(new FooterPanelFactory());
- }
-
- protected void addComponentFactoriesForWelcomeAndAbout(final ComponentFactoryList componentFactories) {
- componentFactories.add(new WelcomePanelFactory());
- componentFactories.add(new AboutPanelFactory());
- }
-
- protected void addComponentFactoriesForEntity(final ComponentFactoryList componentFactories) {
-
- // top-level
- componentFactories.add(new EntityCombinedPanelFactory());
-
- // lower-level
- componentFactories.add(new EntityIconAndTitlePanelFactory());
- componentFactories.add(new EntityIconTitleAndCopyLinkPanelFactory());
- componentFactories.add(new EntityHeaderPanelFactory());
- componentFactories.add(new EntityPropertiesPanelFactory());
- componentFactories.add(new EntityCollectionsPanelFactory());
- }
-
- protected void addComponentFactoriesForEntityCollectionContents(final ComponentFactoryList componentFactories) {
- componentFactories.add(new CollectionContentsAsAjaxTablePanelFactory());
-
- // // work-in-progress
- // componentFactories.add(new CollectionContentsAsIconsPanelFactory());
-
- componentFactories.add(new CollectionContentsAsSummaryFactory());
- }
-
- protected void addComponentFactoriesForEntityCollection(final ComponentFactoryList componentFactories) {
- componentFactories.add(new CollectionPanelFactory());
- }
-
- protected void addComponentFactoriesForEmptyCollection(final ComponentFactoryList componentFactories) {
- componentFactories.add(new EmptyCollectionPanelFactory());
- }
-
- protected void addComponentFactoriesForValue(final ComponentFactoryList componentFactories) {
- componentFactories.add(new StandaloneValuePanelFactory());
- }
-
- protected void addComponentFactoriesForScalar(final ComponentFactoryList componentFactories) {
-
- componentFactories.add(new ReferencePanelFactory());
-
- componentFactories.add(new BooleanPanelFactory());
- componentFactories.add(new BytePanelFactory());
- componentFactories.add(new ShortPanelFactory());
- componentFactories.add(new IntegerPanelFactory());
- componentFactories.add(new LongPanelFactory());
- componentFactories.add(new CharacterPanelFactory());
- componentFactories.add(new FloatPanelFactory());
- componentFactories.add(new DoublePanelFactory());
-
- componentFactories.add(new StringPanelFactory());
-
- // work-in-progress
- // componentFactories.add(new JavaAwtImagePanelFactory());
- componentFactories.add(new JavaUtilDatePanelFactory());
- componentFactories.add(new JavaSqlTimestampPanelFactory());
- componentFactories.add(new JavaSqlDatePanelFactory());
- componentFactories.add(new JavaSqlTimePanelFactory());
-
- componentFactories.add(new IsisMoneyPanelFactory());
- componentFactories.add(new IsisDatePanelFactory());
- componentFactories.add(new IsisDateTimePanelFactory());
- componentFactories.add(new IsisTimePanelFactory());
- componentFactories.add(new IsisTimeStampPanelFactory());
- componentFactories.add(new IsisColorPanelFactory());
- componentFactories.add(new IsisPercentagePanelFactory());
- componentFactories.add(new IsisPasswordPanelFactory());
-
- componentFactories.add(new IsisBlobPanelFactory());
- componentFactories.add(new IsisClobPanelFactory());
-
- componentFactories.add(new JavaMathBigIntegerPanelFactory());
- componentFactories.add(new JavaMathBigDecimalPanelFactory());
-
- componentFactories.add(new JodaLocalDatePanelFactory());
- componentFactories.add(new JodaLocalDateTimePanelFactory());
- componentFactories.add(new JodaDateTimePanelFactory());
-
- componentFactories.add(new ValuePanelFactory());
-
- // or for choices
- componentFactories.add(new ValueChoicesSelect2PanelFactory());
- }
-
- protected void addComponentFactoriesForEntityLink(final ComponentFactoryList componentFactories) {
- componentFactories.add(new EntityLinkSimplePanelFactory());
- }
-
- protected void addComponentFactoriesForVoidReturn(final ComponentFactoryList componentFactories) {
- componentFactories.add(new VoidReturnPanelFactory());
- }
-
- protected void addComponentFactoriesForActionInfo(final ComponentFactoryList componentFactories) {
- componentFactories.add(new ActionInfoPanelFactory());
- }
-
- protected void addComponentFactoriesForParameters(final ComponentFactoryList componentFactories) {
- componentFactories.add(new ActionParametersFormPanelFactory());
- }
-
- protected void addComponentFactoriesForAction(final ComponentFactoryList componentFactories) {
- componentFactories.add(new ActionPanelFactory());
- componentFactories.add(new StandaloneCollectionPanelFactory());
- }
-
- protected void addComponentFactoriesForActionLink(final ComponentFactoryList componentFactories) {
- componentFactories.add(new ActionLinkPanelFactory());
- }
-
- protected void addComponentFactoriesForApplicationActions(final ComponentFactoryList componentFactories) {
- componentFactories.add(new ServiceActionsPanelFactory());
- componentFactories.add(new TertiaryMenuPanelFactory());
- }
-
- protected void addComponentFactoriesForBreadcrumbs(ComponentFactoryList componentFactories) {
- componentFactories.add(new BookmarkedPagesPanelFactory());
- }
-
- protected void addComponentFactoriesForUnknown(final ComponentFactoryList componentFactories) {
- componentFactories.add(new UnknownModelPanelFactory());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java
deleted file mode 100644
index 00f7a4d..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistryDefault.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.registries.components;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import com.google.common.base.Supplier;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Multimaps;
-import com.google.inject.Singleton;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.model.IModel;
-
-import org.apache.isis.viewer.wicket.ui.ComponentFactory;
-import org.apache.isis.viewer.wicket.ui.ComponentFactory.ApplicationAdvice;
-import org.apache.isis.viewer.wicket.ui.ComponentType;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar.ComponentFactoryList;
-import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-
-/**
- * Implementation of {@link ComponentFactoryRegistry} that delegates to a
- * provided {@link ComponentFactoryRegistrar}.
- */
-@Singleton
-public class ComponentFactoryRegistryDefault implements ComponentFactoryRegistry {
-
- private final Multimap<ComponentType, ComponentFactory> componentFactoriesByType;
-
- @Inject
- public ComponentFactoryRegistryDefault(final ComponentFactoryRegistrar componentFactoryList) {
- componentFactoriesByType = Multimaps.newListMultimap(new HashMap<ComponentType, Collection<ComponentFactory>>(), new Supplier<List<ComponentFactory>>() {
- @Override
- public List<ComponentFactory> get() {
- return Lists.newArrayList();
- }
- });
-
- registerComponentFactories(componentFactoryList);
- }
-
- // ///////////////////////////////////////////////////////
- // Registration
- // ///////////////////////////////////////////////////////
-
- /**
- * Registers the provided set of component factories.
- */
- protected void registerComponentFactories(final ComponentFactoryRegistrar componentFactoryRegistrar) {
-
- final ComponentFactoryList componentFactories = new ComponentFactoryList();
- componentFactoryRegistrar.addComponentFactories(componentFactories);
-
- for (final ComponentFactory componentFactory : componentFactories) {
- registerComponentFactory(componentFactory);
- }
-
- ensureAllComponentTypesRegistered();
- }
-
- protected synchronized void registerComponentFactory(final ComponentFactory componentFactory) {
- componentFactoriesByType.put(componentFactory.getComponentType(), componentFactory);
- }
-
- private void ensureAllComponentTypesRegistered() {
- for (final ComponentType componentType : ComponentType.values()) {
- final Collection<ComponentFactory> componentFactories = componentFactoriesByType.get(componentType);
- if (componentFactories.isEmpty()) {
- throw new IllegalStateException("No component factories registered for " + componentType);
- }
- }
- }
-
- // ///////////////////////////////////////////////////////
- // Public API
- // ///////////////////////////////////////////////////////
-
-
- @Override
- public Component addOrReplaceComponent(final MarkupContainer markupContainer, final ComponentType componentType, final IModel<?> model) {
- final Component component = createComponent(componentType, model);
- markupContainer.addOrReplace(component);
- return component;
- }
-
- @Override
- public Component addOrReplaceComponent(final MarkupContainer markupContainer, final String id, final ComponentType componentType, final IModel<?> model) {
- final Component component = createComponent(componentType, id, model);
- markupContainer.addOrReplace(component);
- return component;
- }
-
- @Override
- public Component createComponent(final ComponentType componentType, final IModel<?> model) {
- final ComponentFactory componentFactory = findComponentFactoryElseFailFast(componentType, model);
- final Component component = componentFactory.createComponent(model);
- return component;
- }
-
- @Override
- public Component createComponent(final ComponentType componentType, final String id, final IModel<?> model) {
- final ComponentFactory componentFactory = findComponentFactoryElseFailFast(componentType, model);
- final Component component = componentFactory.createComponent(id, model);
- return component;
- }
-
- @Override
- public List<ComponentFactory> findComponentFactories(final ComponentType componentType, final IModel<?> model) {
- final Collection<ComponentFactory> componentFactoryList = componentFactoriesByType.get(componentType);
- final List<ComponentFactory> matching = Lists.newArrayList();
- for (final ComponentFactory componentFactory : componentFactoryList) {
- final ApplicationAdvice appliesTo = componentFactory.appliesTo(componentType, model);
- if (appliesTo.applies()) {
- matching.add(componentFactory);
- }
- if (appliesTo.exclusively()) {
- break;
- }
- }
- if (matching.isEmpty()) {
- // will just be one
- matching.addAll(componentFactoriesByType.get(ComponentType.UNKNOWN));
- }
- return matching;
- }
-
- @Override
- public ComponentFactory findComponentFactory(final ComponentType componentType, final IModel<?> model) {
- final Collection<ComponentFactory> componentFactories = findComponentFactories(componentType, model);
- return firstOrNull(componentFactories);
- }
-
- @Override
- public ComponentFactory findComponentFactoryElseFailFast(final ComponentType componentType, final IModel<?> model) {
- final ComponentFactory componentFactory = findComponentFactory(componentType, model);
- if (componentFactory == null) {
- throw new RuntimeException(String.format("could not find component for componentType = '%s'; model object is of type %s", componentType, model.getClass().getName()));
- }
- return componentFactory;
- }
-
- private static <T> T firstOrNull(final Collection<T> collection) {
- final Iterator<T> iterator = collection.iterator();
- return iterator.hasNext() ? iterator.next() : null;
- }
-
- @Override
- public Collection<ComponentFactory> listComponentFactories() {
- return componentFactoriesByType.values();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/99094b7e/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java
deleted file mode 100644
index 5d15946..0000000
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/pages/PageClassListDefault.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.isis.viewer.wicket.viewer.registries.pages;
-
-import com.google.inject.Singleton;
-
-import org.apache.wicket.Page;
-
-import org.apache.isis.viewer.wicket.model.models.PageType;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassList;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistrySpi;
-import org.apache.isis.viewer.wicket.ui.pages.about.AboutPage;
-import org.apache.isis.viewer.wicket.ui.pages.actionprompt.ActionPromptPage;
-import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
-import org.apache.isis.viewer.wicket.ui.pages.home.HomePage;
-import org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage;
-import org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage;
-import org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage;
-import org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage;
-import org.apache.isis.viewer.wicket.ui.pages.standalonecollection.StandaloneCollectionPage;
-import org.apache.isis.viewer.wicket.ui.pages.value.ValuePage;
-import org.apache.isis.viewer.wicket.ui.pages.voidreturn.VoidReturnPage;
-
-/**
- * Default implementation of {@link PageClassList}, specifying the default pages
- * for each of the {@link PageType}s.
- */
-@Singleton
-public class PageClassListDefault implements PageClassList {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public void registerPages(final PageClassRegistrySpi pageRegistry) {
- pageRegistry.registerPage(PageType.SIGN_IN, getSignInPageClass());
- pageRegistry.registerPage(PageType.SIGN_UP, getSignUpPageClass());
- pageRegistry.registerPage(PageType.SIGN_UP_VERIFY, getSignUpVerifyPageClass());
- pageRegistry.registerPage(PageType.PASSWORD_RESET, getPasswordResetPageClass());
- pageRegistry.registerPage(PageType.ABOUT, getAboutPageClass());
- pageRegistry.registerPage(PageType.ENTITY, getEntityPageClass());
- pageRegistry.registerPage(PageType.HOME, getHomePageClass());
- pageRegistry.registerPage(PageType.ACTION_PROMPT, getActionPromptPageClass());
- pageRegistry.registerPage(PageType.STANDALONE_COLLECTION, getStandaloneCollectionPageClass());
- pageRegistry.registerPage(PageType.VALUE, getValuePageClass());
- pageRegistry.registerPage(PageType.VOID_RETURN, getVoidReturnPageClass());
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getActionPromptPageClass() {
- return ActionPromptPage.class;
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getEntityPageClass() {
- return EntityPage.class;
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getStandaloneCollectionPageClass() {
- return StandaloneCollectionPage.class;
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getValuePageClass() {
- return ValuePage.class;
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getVoidReturnPageClass() {
- return VoidReturnPage.class;
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getSignInPageClass() {
- return WicketSignInPage.class;
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getSignUpPageClass() {
- return RegistrationFormPage.class;
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getSignUpVerifyPageClass() {
- return RegisterPage.class;
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getPasswordResetPageClass() {
- return PasswordResetPage.class;
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getHomePageClass() {
- return HomePage.class;
- }
-
- /**
- * For subclassing if required.
- */
- protected Class<? extends Page> getAboutPageClass() {
- return AboutPage.class;
- }
-}