public InstallationState getInstallationState()

in src/main/java/org/apache/sling/installer/core/impl/OsgiInstallerImpl.java [1391:1554]


    public InstallationState getInstallationState() {
        synchronized ( this.resourcesLock ) {
            final InstallationState state = new InstallationState() {

                private final List<ResourceGroup> activeResources = new ArrayList<>();
                private final List<ResourceGroup> installedResources = new ArrayList<>();
                private final List<RegisteredResource> untransformedResources = new ArrayList<>();

                @Override
                public List<ResourceGroup> getActiveResources() {
                    return activeResources;
                }

                @Override
                public List<ResourceGroup> getInstalledResources() {
                    return installedResources;
                }

                @Override
                public List<RegisteredResource> getUntransformedResources() {
                    return untransformedResources;
                }

                @Override
                public String toString() {
                    return "InstallationState[active resources: " + this.activeResources +
                            ", installed resources: " + this.installedResources +
                            ", untransformed resources: " + this.untransformedResources + "]";
                }
            };

            for(final String entityId : this.persistentList.getEntityIds()) {
                if ( !this.persistentList.isSpecialEntityId(entityId) ) {
                    final EntityResourceList group = this.persistentList.getEntityResourceList(entityId);

                    final String alias = group.getAlias();
                    final List<Resource> resources = new ArrayList<>();
                    boolean first = true;
                    boolean isActive = false;
                    for(final TaskResource tr : group.getResources()) {
                        final ResourceState resourceState = tr.getState();
                        if ( first ) {
                            if ( resourceState == ResourceState.INSTALL || resourceState == ResourceState.UNINSTALL ) {
                                isActive = true;
                            }
                            first = false;
                        }
                        resources.add(new Resource() {

                            @Override
                            public String getScheme() {
                                return tr.getScheme();
                            }

                            @Override
                            public String getURL() {
                                return tr.getURL();
                            }

                            @Override
                            public String getType() {
                                return tr.getType();
                            }

                            @Override
                            public InputStream getInputStream() throws IOException {
                                return tr.getInputStream();
                            }

                            @Override
                            public Dictionary<String, Object> getDictionary() {
                                return tr.getDictionary();
                            }

                            @Override
                            public String getDigest() {
                                return tr.getDigest();
                            }

                            @Override
                            public int getPriority() {
                                return tr.getPriority();
                            }

                            @Override
                            public String getEntityId() {
                                return tr.getEntityId();
                            }

                            @Override
                            public ResourceState getState() {
                                return resourceState;
                            }

                            @Override
                            public Version getVersion() {
                                return tr.getVersion();
                            }

                            @Override
                            public long getLastChange() {
                                return ((RegisteredResourceImpl)tr).getLastChange();
                            }

                            @Override
                            public Object getAttribute(final String key) {
                                return tr.getAttribute(key);
                            }

                            @Override
                            @Nullable
                            public String getError() {
                                return tr.getError();
                            }

                            @Override
                            public String toString() {
                                return "resource[entityId=" + getEntityId() +
                                        ", scheme=" + getScheme() +
                                        ", url=" + getURL() +
                                        ", type=" + getType() +
                                        ", error=" + getError() +
                                        ", state=" + getState() +
                                        ", version=" + getVersion() +
                                        ", lastChange=" + getLastChange() +
                                        ", priority=" + getPriority() +
                                        ", digest=" + getDigest() +
                                        "]";
                            }
                        });
                    }
                    final ResourceGroup rg = new ResourceGroup() {

                        @Override
                        public List<Resource> getResources() {
                            return resources;
                        }

                        @Override
                        public String getAlias() {
                            return alias;
                        }

                        @Override
                        public String toString() {
                            return "group[" + resources + "]";
                        }
                    };
                    if ( isActive ) {
                        state.getActiveResources().add(rg);
                    } else {
                        state.getInstalledResources().add(rg);
                    }
                }
            }

            Collections.sort(state.getActiveResources(), COMPARATOR);
            Collections.sort(state.getInstalledResources(), COMPARATOR);

            state.getUntransformedResources().addAll(this.persistentList.getUntransformedResources());

            return state;
        }
    }