java - ContentModel 无法解析为变量

标签 java spring eclipse alfresco

我遇到了这个错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    ContentModel cannot be resolved to a variable

    at test2CMIS.Test.main(Test.java:39)" 

我不明白它从哪里来,这是我的代码:

public class Test {

    public static void main(String[] args){
        Test atest = new Test();
        Session session = atest.iniSession();
        AuthenticationService authenticationService=null;
        PersonService personService = null;

        if (authenticationService.authenticationExists("test") == false)
        {
           authenticationService.createAuthentication("test", "changeMe".toCharArray());

           PropertyMap ppOne = new PropertyMap(4);
           ppOne.put(ContentModel.PROP_USERNAME, "test");
           ppOne.put(ContentModel.PROP_FIRSTNAME, "firstName");
           ppOne.put(ContentModel.PROP_LASTNAME, "lastName");
           ppOne.put(ContentModel.PROP_EMAIL, "test"+"@example.com");

           personService.createPerson(ppOne);
        }
    }

我确实导入了:import org.alfresco.model.ContentModel;以及我的代码的许多其他库。

感谢帮助。

我正在使用的代码,我在评论中留下了一些我也尝试过的东西,这样你就可以看到我做了什么:

import java.io.File;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

import org.alfresco.service.cmr.security.*;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;


import java.util.Iterator;

import org.alfresco.repo.jscript.People;
import org.alfresco.repo.security.authentication.AuthenticationException;
import org.alfresco.service.cmr.security.AuthenticationService;
import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.PropertyMap;
import org.apache.chemistry.opencmis.client.api.CmisObject;
import org.apache.chemistry.opencmis.client.api.Document;
import org.apache.chemistry.opencmis.client.api.Folder;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.commons.PropertyIds;
import org.apache.chemistry.opencmis.commons.SessionParameter;
import org.apache.chemistry.opencmis.commons.enums.BindingType;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
import org.apache.chemistry.opencmis.commons.exceptions.CmisContentAlreadyExistsException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisUnauthorizedException;
import org.apache.chemistry.opencmis.client.util.FileUtils;
import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;

public class Test {

    public static void main(String[] args){
        Test atest = new Test();
        Session session = atest.iniSession();
        AuthenticationService authenticationService=new AuthenticationServiceImpl();
        PersonService personService = new PersonServiceImpl();


        HashMap<QName, Serializable> properties = new HashMap<QName, Serializable>();
        properties.put(ContentModel.PROP_USERNAME, "test");
        properties.put(ContentModel.PROP_FIRSTNAME, "test");
        properties.put(ContentModel.PROP_LASTNAME, "qsdqsd");
        properties.put(ContentModel.PROP_EMAIL, "wshAlors@gmail.com");
        properties.put(ContentModel.PROP_ENABLED, Boolean.valueOf(true));
        properties.put(ContentModel.PROP_ACCOUNT_LOCKED, Boolean.valueOf(false));
        personService.createPerson(properties);

        authenticationService.createAuthentication("test", "changeme".toCharArray());

        authenticationService.setAuthenticationEnabled("test", true);

        authenticationService.getAuthenticationEnabled("Admin");

        //String testAuthen = authenticationService.getCurrentTicket();
        //System.out.println(testAuthen);
        //QName username = QName.createQName("test");
        //Map<QName,Serializable> propertiesUser = new HashMap<QName,Serializable>();
        //propertiesUser.put(ContentModel.PROP_USERNAME,username);
        //propertiesUser.put(ContentModel.PROP_FIRSTNAME,"test");
        //propertiesUser.put(ContentModel.PROP_LASTNAME,"test");
        //propertiesUser.put(ContentModel.PROP_EMAIL, "test@example.com");
        //propertiesUser.put(ContentModel.PROP_PASSWORD,"0000");
        //personService.createPerson(propertiesUser);



        //if (authenticationService.authenticationExists("test") == false)
        //{
        //   authenticationService.createAuthentication("test", "changeMe".toCharArray());

        //   PropertyMap ppOne = new PropertyMap(4);
        //   ppOne.put(ContentModel.PROP_USERNAME, "test");
        //   ppOne.put(ContentModel.PROP_FIRSTNAME, "test");
        //   ppOne.put(ContentModel.PROP_LASTNAME, "test");
        //   ppOne.put(ContentModel.PROP_EMAIL, "test@example.com");
           //ppOne.put(ContentModel.PROP_JOBTITLE, "jobTitle");

        //   personService.createPerson(ppOne);
        //}
    }

    public  Session iniSession() {
        Session session;
        SessionFactoryImpl sf = SessionFactoryImpl.newInstance();
        Map<String, String> parameters = new HashMap<String, String>();
        Scanner reader = new Scanner(System.in);
        System.out.println("Enter your logging : ");
        String log = reader.nextLine();
        System.out.println("Enter your password : ");
        String pass = reader.nextLine();

        parameters.put(SessionParameter.USER, log);
        parameters.put(SessionParameter.PASSWORD, pass);

        parameters.put(SessionParameter.BROWSER_URL, "http://127.0.0.1:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser");
        parameters.put(SessionParameter.BINDING_TYPE, BindingType.BROWSER.value());
        parameters.put(SessionParameter.REPOSITORY_ID, "-default-");

        try{
            session = sf.createSession(parameters);
        }catch(CmisUnauthorizedException cue){
            session = null;
            System.out.println("Wrong logging OR password !");
        }
        return session;
    }

最佳答案

您正在编写一个可运行的类,它与 Alfresco 运行的进程不同。从这个意义上说,您的类(class)正在“远程”运行。

因为您的类(class)正在远程运行到 Alfresco,所以您使用 CMIS 的方式是正确的。但 CMIS 只允许您对 Alfresco 中的文档和文件夹执行创建、读取、更新和删除 (CRUD) 功能。 CMIS 不知道如何创建用户或组。

您的类将无法实例化 AuthenticationService 或 PersonService。这些是 Alfresco Foundation API 的一部分,仅当您在与 Alfresco 相同的进程中运行时才起作用,例如在 Action、Behaviour 或 Java 支持的 Web 脚本中。在这些情况下,您将使用 Spring 依赖注入(inject)将这些服务注入(inject)到您的 Java 类中。然后,您可以将类放入 JAR 中,该 JAR 会部署到 Alfresco Web 应用程序中,并由与 Alfresco 相同的类加载器加载。

如果您想远程创建用户,您应该考虑使用 Alfresco REST API 。然后,您的可运行类可以使用 HTTP 客户端调用 REST 调用来创建人员和组。

关于java - ContentModel 无法解析为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42759799/

相关文章:

java - 仅使用数组生成不重复的随机数

java - Maven 无法在 Windows 上启动 Liberty Profile

java - 在 Java Spring 中,java bean 相对于 POJO 的优势是什么?

java - 关于 REST 服务和 I18N 的最佳实践

spring - quartz 线程数

java - Maven 自定义目录结构 - 尽管指定了 sourceDirectory,但没有要编译的源

java - 在 Eclipse 中安装新的 JRE 后,我所有的 Java 项目都出现错误

java - 正确重定向到 WEB-INF 中的 JSP

java - 使用 jpql 和 jpa 从日期字段中提取年份

java - 在 Android Studio 中将代码从 Java 转换为 Kotlin